#pragma once

#include <memory>
#include <vector>
#include <set>
#include <boost/noncopyable.hpp>

class IUnit : boost::noncopyable
{
public:
    virtual void attack() = 0;
    virtual void move() = 0;

    virtual ~IUnit() { }
};

typedef std::shared_ptr<IUnit> IUnitPtr;
typedef std::vector<IUnitPtr> IUnitArray;
typedef std::set<IUnitPtr> IUnitSet;
